package pl.edu.agh.iosr.gamblingzone.dao;

import java.util.Date;
import java.util.List;

import pl.edu.agh.iosr.gamblingzone.model.BettingSlip;
import pl.edu.agh.iosr.gamblingzone.model.User;

/**
 * The Interface BettingSlipDAO.
 */
public interface BettingSlipDAO extends GenericDAO<BettingSlip, Long>{
	
	/**
	 * Gets the betting slips between given period of time.
	 * 
	 * @param user the user
	 * @param dateBegin the date begin
	 * @param dateEnd the date end
	 * 
	 * @return the betting slips between
	 */
	public List<BettingSlip> getBettingSlipsBetween(User user, Date dateBegin, Date dateEnd, int page);
	
	/**
	 * Returns count of betting slips between given period of time.
	 * 
	 * @param user the user
	 * @param dateBegin the date begin
	 * @param dateEnd the date end
	 * 
	 * @return the betting slips between count
	 */
	public int getBettingSlipsBetweenCount(User user, Date dateBegin, Date dateEnd);
	
	/**
	 * Gets the page count of betting slips between given period of time
	 * 
	 * @param user the user
	 * @param dateBegin the date begin
	 * @param dateEnd the date end
	 * 
	 * @return the betting slips between page count
	 */
	public int getBettingSlipsBetweenPageCount(User user, Date dateBegin, Date dateEnd);
	
	/**
	 * Find all betting slips that belongs to given user.
	 * 
	 * @param user the user
	 * 
	 * @return the list< betting slip>
	 */
	public List<BettingSlip> findAll(User user, int page);
	
	/**
	 * Gets the page count for given user.
	 * 
	 * @param user the user
	 * 
	 * @return the page count
	 */
	public int getPageCount(User user);
	
	/**
	 * Gets the entities count.
	 * 
	 * @param user the user
	 * 
	 * @return the entities count
	 */
	public int getEntitiesCount(User user);
}